package com.hnchances.studentscoresystem.dto.request;

import lombok.Data;

import java.math.BigDecimal;

/**
 * 成绩添加请求DTO
 * 对应接口：/grades/add（有鉴权，老师权限）
 * 功能：老师登记本班级学生成绩，关联班级、课程、考试、学生信息
 */
@Data
public class GradesAddDTO {

    /**
     * 课程ID（关联course表id，成绩所属课程）
     * 约束：非空（匹配数据库grades表courseID字段，必传）
     */
    private Integer courseID;

    /**
     * 考试ID（关联exam表id，成绩所属考试）
     * 约束：非空（匹配数据库grades表examID字段，必传）
     */
    private Integer examID;

    /**
     * 班级ID（关联class表id，成绩所属班级）
     * 约束：非空（匹配数据库grades表classID字段，且需与操作人班级一致）
     */
    private Integer classID;

    /**
     * 学生ID（关联student表id，成绩所属学生）
     * 约束：非空（匹配数据库grades表studentID字段，补充字段以定位学生）
     */
    private Long studentID;

    /**
     * 成绩分数（学生该考试的成绩）
     * 约束：非空，范围0-100（匹配数据库grades表grades字段，支持小数如88.5）
     */
    private BigDecimal grades;

    /**
     * 操作人ID（添加成绩的老师ID，用于权限校验）
     * 约束：非空（后端也可通过Token解析获取，匹配数据库user表id字段）
     */
    private Long operatorId;

    /**
     * 操作人班级ID（添加成绩的老师所属班级，用于校验“仅登记本班级成绩”）
     * 约束：非空（匹配数据库user表classID字段，确保与成绩班级ID一致）
     */
    private Integer operatorClassId;
}